package com.night.icm.service.business.service;

import com.night.icm.common.utils.PageDataDTO;
import com.night.icm.common.utils.TermType;
import com.night.icm.model.business.CourseTeacherDTO;

import java.util.List;

/**
 * CourseTeacherService
 *
 * @author Liao ZhiYong
 * @date 2020/2/14
 */
public interface CourseTeacherService {

    /**
     * 分页查找开课信息
     *
     * @param page        页号，从0开始
     * @param size        每页记录条数
     * @param sort        排序字段，例如：字段1,asc,字段2,desc
     * @param year        所属年度
     * @param termType    所属学期
     * @param courseName  课程名称
     * @param teacherName 授课教师
     * @param isOpen      是否开课
     * @return 开课信息
     */
    PageDataDTO<CourseTeacherDTO> findOnePage(int page, int size, String sort, String year, TermType termType, String courseName, String teacherName, Boolean isOpen);

    /**
     * 添加开课信息
     *
     * @param courseTeacherDTO 开课信息
     * @return 开课信息
     */
    CourseTeacherDTO create(CourseTeacherDTO courseTeacherDTO);

    /**
     * 根据id删除开课信息
     *
     * @param id 开课信息id
     */
    void delete(String id);

    /**
     * 更新开课信息
     *
     * @param id               开课信息id
     * @param courseTeacherDTO 开课信息
     * @return 开课信息
     */
    CourseTeacherDTO update(String id, CourseTeacherDTO courseTeacherDTO);

    /**
     * 根据id查找开课信息
     *
     * @param id 开课信息id
     * @return 开课信息
     */
    CourseTeacherDTO findById(String id);

    /**
     * 查找所有开课课程
     *
     * @param param   排序参数
     * @param pattern 排序模式: asc/desc
     */
    List<CourseTeacherDTO> findAll(String param, String pattern);
}
